Git在项目中使用技巧
1.常用的命令
mkdir 文件夹名 创建文件夹
clear 清楚屏幕
ls或者ll 将当前目录下的子文件和子目录平铺在控制台
find 目录名 将对应目录下的子孙文件或子孙目录平铺在控制台
rm 文件名 删除文件
mv 源文件 重命名文件
cat ... 查看对应文件内容
2.git高级命令
git 操作基本流程
- 创建一个文件夹(项目)
git init
项目下出现 .git 文件 - git全局配置
git config --global user.name "XXXX"
git config --global user.email "XXXX"
- 在所在项目中工作 (例如你在src文件下写完你的代码)
项目代码写完,执行 git add 路径 (一般直接写 git add ./ 将所有代码提交到暂存区
git add ./
命令流程(先到版本库再到暂存区 git hash-object -w 文件名 git update-index 不理解就去看git的底层命令) - 代码提交
git commit -m "注释内容"
(提交到本地库) - 分支上工作(项目主分支是dev,开发使需要创建新的分支,例如创建test)
1. 创建分支git branch test
2. 切换分支git checkout test
(切换操作,必须保持分支的处于已提交状态)
注:可以直接创建并切换git checkout -b test
3. 分支上工作顺序 (首次无需拉取远程dev代码)
4. 拉取远程dev代码(或者合并dev代码)
git pull origin "dev"或git merge dev
处理冲突,然后工作
5. 事情处理完,将修改后内容添加至暂存区
git add ./
6. 添加暂存区后再添加到本地仓库
git commit -m "注释"
7. 将分支代码提交到远程仓库
如果项目是首次创建,需要和远程仓库连接(如果项目是直接从远程 clone,则无需操作)
git remote add origin 地址
git push -u origin test
8. 提交分支后,团队leader会审查代码,再合并到dev上
git操作
-
如何修改分支名称?
需要将分支br_rename_old修改为br_rename_new,执行如下步骤:
1、执行命令git checkout br_rename_old
2、执行命令git pull origin br_rename_old
将代码更新到和远程仓库一致
3、执行命令git branch -m br_rename_old br_rename_new
将本地仓库的br_rename_old的名称修改为br_rename_new
4、执行命令git push --set-upstream origin br_rename_new
将本地分支push到远程仓库
5、执行命令git push origin --delete br_rename_old
将远程分支br_rename_old删除 -
如何删除暂存区文件?(可以使用编辑自带)
1、仅仅删除暂存区文件
git rm --cache 当前文件所在目录
(例如git rm --cache src/vdfvsdfvosdjfvosdfvdof.txt
)
2、暂存区和工作区都删除
git rm -f 当前文件所在目录
(例如git rm -f src/vdfvsdfvosdjfvosdfvdof.txt
) -
如何删除版本库?(已提交)
1.仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
当我们执行 --soft 命令后,可以看到控制台无任何输出。它只是把HEAD指向了上一个版本
git reset --soft HEAD^
(指向上一个版本)
git reset --soft 版本库ID
2.仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset ----mixed HEAD^
3.彻底将工作去/暂存区和版本库记录恢复到指定的版本库
git reset --hard HEAD^
(返回上一个)
git reset --hard HEAD@{n}
(通过reflog返回)或者git reset --hard 版本库id
(通过reflog返回)** -
git fetch作用?
更新远程 从远端仓库中下载commits, files, refs到本地仓库中。当你想要看看其他人都在做些什么的时候,就要使用fetch命令。
你可以认为git fetch是这两者中更加安全的那个,即便下载了远端的内容,但也不会更新你本地仓库的版本状态,以保证你本地当前代码完好无损。反观git pull命令则是一个更加激进的命令,它会下载当前正在工作的分支对应的远端内容,并且在下载成功之后马上执行一个git merge命令,为新下载下来的远端内容创建一次merge commit。此时如果你有正在进行中的工作还没准备好进行合并,这些行为可能会造成代码冲突。 -
git stash作用?(以及git stash pop)
在某分支上修改内容,这时候却需要切换其他分支,但没修改好不想提交,可以使用git stash 命令,将但前分支没修改好的代码,保存至堆栈区,在切换到别的分支操作。在别的分支操作完,切回到刚才的分支,可以先将刚才分支删除,在重新创建,切换后,在把刚才保存在堆栈的修改内容,pop出来,执行 git stash pop命令(可以在任意分支pop出来) -
删除分支?
git branch -D '分支名' 删除本地分支
git push origin --delete 分支名 删除远程分支 -
如何更新本地分支内容?(例如主分支为dev,当前分支为test)
如果想拉去dev分支最新代码
方法一:git pull origin dev (做了两步操作,拉去dev最新代码,并将它合并到当前分支)
方法二:git merge dev (将dev分支合共到当前分支,dev不是最新还需要切到dev分支更新,切换之前先git stash) -
常用命令
git branch -r
查看所有远程分支git branch -a
列出所有本地分支
git checkout -
切换到上一个分支 (可以方便两个分支之间进行切换)
git push origin --delete
分支名 删除远程分支
git status
显示有变更的文件
git log
显示当前分支的版本历史
git diff
显示暂存区和工作区的差异 (你可以查看你改了什么,前期你没有添加到暂存)
git fetch
下载远程仓库所有变动 (哪些分支新建了等)
git stash
(未跟踪的文件不会被缓存,例如新创建的文件)
git stash list
查看缓存了几条
git stash save "test-cmd-stash"
git stash pop
//命令恢复之前缓存的工作目录,这个指令将缓存堆栈中的第一个stash删 除,并将对应修改应用到当前的工作目录下。(并将缓存拷贝删除)
git stash apply
//命令,将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝。
git stash apply stash@{n}
n表示第几个到工作区
git stash drop
//移除stash 移除具体哪一个
git stash drop stash@{n}
git stash clear
//删除所有缓存的stash -
撤回push操作?(远程仓库)撤回已经提交到远程的代码
先head指向要回到的版本,在强行推送到远端
git push --force
例如撤回前两个,只需将本地head指向第三个,在强行推送到远端
git reset --hard 1c41df20421e36343d453d64477e0594fd98b041
git push --force
10. reset回退commit,后悔咋办?
例如执行git reset --hard HEAD^,指向了别的版本,想在回来。
执行git reflog 查看所有 HEAD的切换 找到版本id,在执行git reset --hard 版本id
上图是执行git reflog后的结果
git reflog
展示你历史操作记录,在你执行错误命令时,可以帮助你快速返回执行错误之前的状态
reflog第一个记录(HEAD@{0})就是你最新的操作记录,如果你想返回这操作之前的一个步骤,只需将 HEAD指向HEAD@{1} ,具体操作如下:
git reset --hard HEAD@{1}
或者 git reset --hard baa789e
(对应的版本id)