区分概念
- 本地仓库,就是自己本地未提交的代码存储的地方
- 自己远端仓库 就是fork后的仓库
- 远端仓库 就是fork前的仓库
- 其中自己的远端仓库,每个开发者都会有,远端仓库就是唯一一个;提交代码流程就是:本地仓库—>自己的仓库—> 自己的仓库申请到远端仓库
一、fork一个项目
1.点击fork2.fork后会生成一个自己的仓库,复制http链接,进行clone
执行代码如下:
1.cd file_name/ #file_name文件名自定义 保存项目的地方
2.git clone fork路经(http路径)
3.git remote add 自定义名 fork路径 #为对应的远端仓库起名 fork路径表示对应的远端仓库路径
4.git branch 分支名 # git创建分支名但不切换
5.git branch -b 分支名 #创建分支并切换
6.git branch -D 分支名 # 删除分支
以上项执行成功,项目已正常拉到本地
二、常用
1.git status #查看有哪些可提交文件
2.git add 文件名 #选择要提交的文件
3.git commit 提交内容描述 #将add命令增加的文件进行提交
4.git remote -v #查看仓库名
注:第一列为仓库名 第二列为gitlab的路径(上面说的fork中的路径)
5.git branch #查看当前分支
6.git push 仓库名1 分支名 1 #将提交好的文件推送到对应的仓库对应的分支下
7.git pull 仓库名2 分支名2 #拉取仓库名2下分支名2的代码到本地仓库下的当前分支
8.git branch -a # 查看本地分支+远程分支
注:带有remote标志的为自己的远端分支,其它为本地分支
9.git checkout 分支名 #切换到对应的分支
10.git log #查看当前分支的提交记录
11.git stash # 暂存本地修改
12.git stash list #查看本地暂存
13.git stash drop stash@{n} #删除某个暂存记录 n可取 git stash list 中获取到的0或1
14.git stash apply stash@{n} #应用某个暂存记录到当前分支 但不会删除暂存记录
15.git stash pop stash@{n} #应用某个记录到当前分支 并删除本条暂存记录
16.git stash clear #删除所有的暂存
17.git stash show stash@{n} #查看当前暂存做了哪些改动(针对哪些文件做出了改动)
18.git stash show stash@{n} -p #查看当前暂存做了哪些改动(针对具体改动的内容)
三、特殊使用
1.在当前分支下提交了代码,但是后悔提交了
1. git log #查看提交记录
2. git reset ---hasd commit编号 #回滚到指定版本号,不会保存对应的修改 其中commit编号指上面git log 查到的 commit后的一串数字
3. git reset --soft commit commit版本号 #回滚到指定版本,并保留对应的修改
2.在当前分支下拉错代码了,想退回去
1. git reflog #查看最近做了哪些操作
2. git reset --hasd HEAD@{n} #回滚到指定的操作
3.本地分支特别乱,希望远端分支可以覆盖本地分支
1.git fetch --all
2.git reset --hasd 分支名
3.git push -f 仓库名 分支名
举例:
目标:希望当前分支process_revision下的代码被远端自己仓库origin/jilindaxue分支下的代码覆盖,推送代码到当前分支,操作如下
4.将其它分支的代码拉取到当前分支提交
1. git checkout 分支名 #切换到想要操作的分支
2. git cherry-pick commit版本号 #将版本号对应的commit拉取到当前的分支并提交
3. git push 仓库名 分支名 #将提交的分支推送到对应的仓库
四、其它
1.代码量查询
注:在项目目录下执行
#在1990-07-06到2020-07-27时间段内代码总量
git log --since="1990-07-06" --before="2020-07-27" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
#在2020-07-13到2020-07-26时间段内当前作者的代码量
git log --author="作者名称" --since="2020-07-13" --before="2020-07-26" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'