Git使用笔记
初始使用流程:
git config [--global] user.name "xxx" 设置username
git config [--global] user.email "xxx@xxx" 设置email
--global:全局设置,不加则是对当前git 目录设置(适合区别公司项目和私人项目)
git init :当前目录加入git版本控制(不想再用git管理:rm -rf .git/ )
git add -A(添加所有文件到暂存区)
git commit -m "提交信息"
git push <远程分支name>(只有一个远程分支时可省略)
与他人合作同一个仓库时:
1. 定期pull一下拉取最新代码
2. 提交代码(无分支版):
自己在提交代码之前先pull代码,假如修改同一个文件了,一般会提示拉取失败,这个时候需要stash当前修改到储藏区:
git stash [save 'message']
git pull
git stash pop (弹出stash栈顶的stash即刚才stash的修改,或者使用 stash apply 可不删除该stash)
这时本地和远程的两者修改的不是同一块内容时,可以自动合并,改了同一块区域时,大多编辑器会提示冲突区域,并且提供合适的工具帮助合并(eg:IDEA),也可以自己配置git difftool或者mergetool进行合并代码
上面的拉去代码的步骤 有些IDE自动帮你做了(eg:IEDA)。
保证本地代码最新后再进行add commit等操作,然后进行push
3. 提交代码(分支版)
在当前编辑的功能或bugfix分支commit之后(不提交的话切换分支会保留修改),切换到主分支
git checkout master (git checkout -b <branchName> 新建并切换到此分支)
在master分支下pull拉取最新代码,没有冲突,因为不会直接编辑master分支
然后开始merge分支
git merge branchName
如果没有冲突将会很顺利,假如有冲突,git会生成冲突标记,需要手动解决冲突,可借助于工具 比如 beyondCompare (3-way merge tool)
解决冲突后,add文件 提交文件,然后更新远程master分支
4. 在某一分支上不是最新的记录上提交了怎么办?
假如有git提交图示的话,可以看出是你在历史的一次提交上分叉commit了,有些IDE很贴心的可以帮你自动merge之后提交。
手动解决这个问题的话,可以是 拉取新代码到一个新的分支上,然后merge两个分支再提交,类似于master的合并,(仍可能会存在冲突)
5. 重置commit
使用git reset 命令
git reset --soft HEAD~ 最近的一次commit
或者 git reset --soft <commit hash>
--soft --mixed --hard区别:soft会把被重置的修改放入 staged,即git add的效果;mixed会变成未staged的修改;hard会完全清除掉(包括被重置的修改和当前未add的修改,慎用!)
6. 设置远程url
git remote set-url <name> <newurl>
总结:git的使用可以使用 git --help 或者某个命令的 help 像:git config --help 来查看相应手册