git常用命令
基本命令
1、克隆代码
git clone 地址
2、查看当前状态
git status
状态分为
"未跟踪" Untracked 未跟踪的文件需要git add 添加之后,执行commit才会保存到版本库中。
"已经修改" modified 执行commit才会保存到版本库中。
"已经删除" deleted 本地删除文件不代表版本库中已经删除,需要执行git rm [文件名]
3、添加未跟踪文件
git add [文件名]
注意:不要git add . 这样会让eclipse生成的文件也add进去。 使用add *
使用 `git add *.java, *.jsp`
4、提交代码
git commit [文件名] -m "注释"
5、从版本库拉代码
git pull
6、代码提交到版本库
git push
7、查看文件修改情况
git diff [文件名] 如果不加文件名,会将所有已经修改的文件与版本库进行比较
8、回滚
git reset [--hard] [--mixed]
[--hard] 是强制抹除修改,未提交的修改会丢失。 git reset --hard #######慎重使用#####
[--mixed] 是保存修改,相当于重新提交。
9、rebase
git rebase [分支名] //一般基于origin/master rebase 即 git rebase origin/master
本次提交后,从版本库拉去代码,别人也修改了。此时两者不在一条线上,rebase合并。
出现冲突时,
1、查看那些文件冲突: git status
2、修改:
3、将冲突文件修改后添加:git add 文件名
4、git rebase --continue
10、图形界面工具
gitk --all
修改撤回
git diff > tmp.diff //修改内容暂存置tmp.diff
git reset --hard //去除修改
rm -f tmp.diff //删除tmp.diff
分支
1、查看本地分支
git branch
* dev
master
*代表当前位于dev分支
2、查看远程分支
git branch -r
origin/dev
origin/master
3、查看本地和远程分支
git branch -a
4、创建分支
git checkout -b new_branch
注意,new_branch的代码来自于当前分支
5、切换分支
git checkout another_branch
和创建分支就差-b参数
6、push本地分支代码到远端服务器
git push origin branch_name
如果远端服务器没有该分支,将会自动创建
7、pull远端分支代码到本地对应分支
git pull origin branch_name
8、删除本地分支,首先切换到别的分支,然后才能删除某个分支
git checkout b
git branch -d a
9、删除远程分支
git push origin --delete branch_name
10、合并本地分支b4.5到master上:
git checkout master
git merger b4.5 将本地的b4.5分支代码合并到当前分支master中
出现冲突:
1、修改冲突文件
2、git add
3、git commit
11、合并远程分支,和前面的几乎一样,
git merge origin/b
远程分支b被合并到本地当前分支dev中了。
12、重命名分支:
git branch -m <old_name> <new_name> (如果有同名会失败,改用 -M 可以强制覆盖)
标签
1、查看本地标签:
git tag
2、推送所有标签:
git push --tags
3、删除本地标签:
git tag -d 标签名
4、删除远程标签:
git push origin --delete tag 标签名
文件追踪问题
如果我们不小心将某个文件加入了 git 版本控制,但是突然又不想继续跟踪控制这个文件了,怎么办呢?
使用 git update-index 即可。
不想继续追踪某个文件
git update-index --assume-unchanged your_file_path
如果想再次继续跟踪某个文件
git update-index --no-assume-unchanged your_file_path
windows 乱码
gitk --all打开,中文乱码
vi .gitconfig。 或者打开C:\Users\cage\.gitconfig文件
在文件末尾加上:
[gui]
encoding = utf-8
git status时,中文文件名字乱码:
git 默认中文文件名是\xxx\xxx
等八进制形式,是因为 对0x80以上的字符进行quote
git config --global core.quotepath false
某次提交合并到分支上
将分支b2上的某次提交合并到分支b1上。
1、b2分支上:查看commit号
git log
2、切换到b1分支
git checkout b1
git cherry-pick ef895d2b76610d9c41e901e09e4c483a132870e2
3、出现冲突,解决后使用
git add filepath
git cherry-pick --continue