-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Git #6
Comments
更改上一次的
|
revert 还是 reset ?写代码写久了, 难免会出现一些意外。 当一不小心把一个不应该提交的东西提交到了Git仓库里的时候, 你可以使用 revert在当前工作目录干净的情况下( 当撤销的commit 是一个 merge 的 commit 的时候,需要通过-m 选项来指定具体的 commit。 参考: |
Git Tips
|
一些常用命令
git commit -am "message"
: 用于添加并提交。git reset --hard <commit>
: 将当前分支恢复到指定的commitgit diff <branchname> --shortstat
: 显示分支和远程分支的diff信息, 具体如下所示:git diff <branchname> --name-only
: 该命令将会显示当前分支与指定分支相比发生变化的文件git reset
: 撤销刚才使用git add
添加的文件git reset --hard
: 使用这个参数将会彻底回退到某个历史版本git reset --soft
: 使用这个参数将会回退到某个版本, 但是只会回退commit的信息, 如果要继续提交, 直接commit即可。 当某次提交之后, 发现有些文件是需要另外处理的, 那么就可以回退到之前的版本, 处理后再重新commit。一些小技巧
恢复误删除分支
git log -g
获取到已删除分支的最后一次的commit
的哈希值git branch <branchname> <commit>
来从该commit
出新建一个分支。合并分支的时候, 将一个分支的所有提交合并为另一个分支的一个提交
git merge <branchname> --squash
关于.gitignore
忽略文件的最后不能跟分号
文件被跟踪后再修改.gitignore添加该文件以便不被记录
有时候可能会遇到这样的情况, 使用
git add .
然后将不需要添加的文件添加了, 之后才发现这个文件不应该被添加, 然后去修改.gitignore
文件, 结果之后对这个文件的更改依然会被记录进去。 然后出现的现象就是,.gitignore
并没有什么用。 事实上, gitignore只会在检测到目录中有未跟踪文件(untracked files
)的时候, 才会根据.gitignore
里面的通配符去匹配文件, 如果文件匹配, 将会忽略, 否则在使用git add
的时候, 就会将其添加进去, 从而变成跟踪文件, 也就是说, 在git add
一个文件之后, 那么只要这个文件发生了变化, 无论是更改还是删除, git都将会跟踪其变化, 所以这就造成了“add之后修改ignore, 但是并没有ignore”的现象了。那么解决方案也是有的。 只需要取消对文件的跟踪就行了。
如果是某个文件夹下的东西都不该被提交, 但是却被提交了, 那么可以添加
-r
选项来清除对该文件夹的跟踪。那么如果文件很多怎么办?比如有一大堆
*.class
文件, 这个时候就直接find
就可以咯。然后再执行
git add .
将这一次的更改添加进去, 之后再出现*.class
的时候就会被忽略掉了(前提是你在ignore里面添加了对应的匹配规则)The text was updated successfully, but these errors were encountered: