一、成员A在本地新建项目P并提交到Git仓库
1、在本地创建一个新的项目。
2、创建本地仓库,依次选择 VCS - > Import into Version Control -> Create Git Repository
这时会出现一个弹窗让选择本地仓库的位置,这里选新建项目P所在的位置,点击ok就完成了本地仓库的创建。
3、在项目上右键,依次选择 Git -> Add
4、在项目上右键,依次选择 Git -> Commit Directory
5、在项目上右键,依次选择 Git -> Repository -> Push
因为是第一次提交,所以在第5步的push界面点击 Define remote链接选择远程仓库的地址,然后在点push按钮,本地项目就成功上传到Git了。
二、同一个人,有两个git账号,一个是user1,另一个是user2。之前一直用user1更新和提交代码,现在user1无法使用,在不改动本地仓库和远程仓库代码的前提下,想用user2更新和提交代码。
(1)项目管理员将user2添加到项目成员,并分配和user1一样的角色。
(2)使用user2登陆git,复制项目url
http://user2@git.baidu.net/frame/demo.git
(3)进入项目根目录下,用文本编辑器打开 项目根目录下 的.git 目录下的 config 文件,用上一步复制的项目url替换图片红框中的内容。
(4)更新代码,发现已经是在用user2用户操作了(考虑到公司保密制度,这里使用了马赛克)
三、将dev分支merge到master分支
# 检出到dev分支
git checkout dev
# 拉取dev最新代码到当前文件夹
git pull
# 检出到master分支
git checkout master
# 将dev分支合并到master
git merge dev
# 将本地的master分支推送到origin主机
git push -u origin master
四、误将与项目无关的文件/文件夹上传到Git(比如Idea的配置文件),想要删除这些文件。
# 删除名字为.idea的文件夹和名字为test.iml的单个文件
git rm -r --cached .idea
git rm -r --cached test.iml
git commit -m 'delete idea files'
git push -u origin master
执行完成后,git上名字为.idea的文件夹和名字为test.iml的单个文件就没有了
五、在不提交当前更改的情况下切换到其他分支
这种情况经常遇到,比如正在dev分支开发新功能,需要解决test分支上的bug,解决完bug再切回dev分支继续开发新功能。
(1)把当前dev分支的内容保存起来
git stash
(2) 查看是否保存成功
git stash list
(3)切换到test分支,修改bug并提交
(4)切回dev分支,恢复切换分支前的修改
git stash apply stash@{0}
(5)恢复后,删除保存的修改
git stash drop stash@{0}
(6)在dev分支开发完之后,正常提交即可。
六、将代码回退到指定版本
# 查看最近5次的提交记录
git log -5
#
git reset --hard v12345678
git push -f origin master
七、将dev分支代码合到master分支,执行merge后没有执行push,此时想取消合并
1、查看merge操作的上一个提交记录的版本号 git reflog
2、回滚到merge之前的代码 git reset --hard 版本号
八、将dev分支代码合到master分支后,想取消合并,保留master分支合并前的代码
(1)查看提交历史
git log --oneline --graph
(2)撤回 merge
git reset --merge 1f111bf
或执行
git reset --merge HEAD^
(3)强制push
git push -u origin master -f
九、将dev分支的部分提交合到master分支,例如dev分支提交了3次,只想将其中2次的提交合并到master分支
1、在dev分支使用git log
找到想要复制的commit 的id,记录下来;
2、切换到master分支,使用git cherry-pick [上面记录的commit id]
回车即可!
如果想要复制多个, 使用git cherry-pick (commitid1..commitid100)
,commitid1为想复制的最老提交(不包括),commitid100为想复制的最新提交(包括)
如果想要包括commitid1,那么在commitid1后加^即可,即 git cherry-pick [commitid1^..commitid100]
3、如果要取消这次cherry-pick,则使用 git cherry-pick --abort
4、git push
到远端master分支