1.
$git branch 显示所有本地分支(初始化时只有一个master分支)
$git init 初始化本地版本库(重新初始化一次,可以忽略)
$ls -a 找到目录下隐藏的 .git
$rm -rf .git 删除 .git(就会清除当前的git仓库, 可以再次执行 git clone...)
$ ls -a 可以看到master分支已经删除
2.
$git branch -a 列出所有分支名(查看所有分支)
$git checkout master 分支切换到 master
$git checkout 检查属于哪个分支
$git checkout voxbranch_01 切换到指定分支voxbranch_01
3.
$git checkout -b dev origin/dev checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
$git checkout -b release origin/release 作用参见上一条说明
$git checkout dev 切换回dev分支,并开始开发
4.
$git branch devlyl 在当前分支下,新建一个名为devlyl的分支
$git push origin devlyl 将本地新建的分支(分支名为:devlyl)同步到远程服务器上,这样别人也能看到
$git checkout devlyl
$git branch --set-upstream-to=origin/devlyl 或者git push --set-upstream origin devlyl
注:$git branch -vv 查看关联
$git branch -u origin/devlyl 关联
5.
$git branch -r 命令查看远端库的分支情况
$git branch --set-upstream-to=origin/dev 建立本地到上游(远端)仓库的链接,这样代码才能提交上去
$git branch --unset-upstream master 取消对master的关联关系
6.
$git add readme.txt 提交新增文件之前先添加文件
$git commit -am "add a readme file" 提交新增文件并附加描述信息
$git add . 添加全部新增
注:在仓库的根目录下创建一个名为.gitignore的文件,然后编辑文件,把需要提交忽略掉的文件或文件夹包括进去
注:有文件内容更改,之后提交
$git commit -a -m "made a change" 当前分支提交并添加提交信息描述
$git restore [--worktree或--staged或-s HEAD~1或-s v_001] [文件名(llv.c)或者其他参数(*.c)] 撤销修改
--worktree: 撤销文件工作区的修改
--staged: 撤销暂存区的修改,如撤销到add之前
-s HEAD~1: 当前工作区切换到上个 commit 版本
-s v_001: 当前工作区切换到commit id为v_001的 commit 版本
7.
$git status 查看修改内容
$git diff 查看具体的更改差异,如果比较多按回车键往后看,按下Q键退回到命令行状态
$git log 查看历史记录
$git reset 用于将当前HEAD复位到指定状态
一般用于撤消之前的一些操作(如: git add,git commit,etc.)
$git reflog <subcommand> <options> 引用日志或“reflogs”记录分支的提示和其他引用在本地存储库中更新的时间
可以很好地帮助你恢复你误操作的数据
$git rebase 在另一个分支基础之上重新应用,用于把一个分支的修改合并到当前分支
8.
$git pull 取回远程主机某个分支的更新,再与本地的指定分支合并
在默认模式下,git pull是git fetch后跟git merge FETCH_HEAD的缩写
$git remote show origin 查看远程仓库信息(包括git clone url)
9.
$git push 用于将本地分支的更新,推送到远程主机
注意: $git push origin与$git push -u origin master的区别
$git push origin 将当前分支推送到origin主机的对应分支
注:如果当前分支只有一个追踪分支,那么主机名都可以省略
$git push 如果当前分支与多个主机存在追踪关系,
那么这个时候-u选项会指定一个默认主机,
这样后面就可以不加任何参数使用git push
$git push -u origin master 上面命令将本地的master分支推送到origin主机,
同时指定origin为默认主机,
后面就可以不加任何参数使用git push了
$git push origin master
$git push origin HEAD:refs/for/远端分支名
$git push origin 本地分支名:refs/for/远端分支名
例子:
$git push origin test:refs/for/master #本地test分支代码提交到远端master
8.
HEAD是指当前的快照(版本)
HEAD~1(或者HEAD~)回退一个快照(版本)
HEAD~2回退两个快照(版本)
HEAD^ 表示当前快照(版本)
HEAD^^ 表示上一个快照(版本), 以此类推
HEAD~10 表示往前退10个版本
9. $git fetch
$git reset --hard origin/dev 强制用远程仓库的dev分支覆盖当前分支
10. 用远程内容完全覆盖本地
$git fetch --all
$git reset --hard origin/master
11. 撤销 $git add .的操作 $git reset HEAD .
12.直接clone和push的配置
$git config --global user.name "lt001"
$git config --global user.password "123456"
$git config --global user.email "lt001@ftgg.com"
查看是否有.ssh目录
cd ~/.ssh/
如果有目录,会直接进入该目录,然后执行下面的命令一路回车,生成SSH key:
ssh-keygen -t rsa -C "lt001@ftgg.com"
如果是windows,则C:\Users\vily\.ssh\目录,copy文件id_rsa.pub中的文本,将其粘贴到gitlab(或者github)的 User Settings\SSH Keys\Add an SSH key中。
至此OK了。
13.重命名分支:
对本地分支进行重命名:
$git branch -m oldName newName
删除远程对应的旧分支:
$git push origin --delete oldName
将本地的新分支同步到远程:
$git push -u origin newName
14.强制覆盖分支:
切换到要覆盖的分支,这里我们用develop分支
$git checkout develop
执行覆盖的命令,这里是将master分支的内容覆盖到develop分支
$git reset --hard origin/master
覆盖成功之后,将本地分支强行推到远程分支
$git push -f
强制覆盖master分支
$git checkout develop
$git pull --rebase
$git push origin develop:master -f
15.放弃本地修改,强制远程分支覆盖本地分支
$git fetch --all
$git reset --hard origin/master
16. 子模块的递归clone
$git clone -–recursive https://github.com/NVIDIAGameWorks/KickstartRT_Demo
或者
$git clone --recurse-submodules git@github.com:vilyLei/Vulkan-Samples.git
$git submodule update --init --recursive
$git submodule update --init --recursive --force --remote
如果还是下载不下来,那就需要设置用你自己的http与https的代理,例如:
git config --global http.proxy http://127.0.0.1:10080
git config --global https.proxy http://127.0.0.1:10080
17. git 获取远程地址
$git remote -v
18. 撤销 git add .操作:
$git reset --mixed
这个操作退出文件暂存区并保留修改提交
19. git添加版本号: git tag -a 0.3.1 -m "0.3.1"
20. gitLabKey 生成和应用
step 1: 使用命令 ssh-keygen -t rsa -b 2048 -C "lvl@svtc.com"
step 2: 出现这一句的时候 Enter file in which to save the key (/c/Users/lvl/.ssh/id_rsa):直接回车
然后输入gitLab密码 Enter passphrase (empty for no passphrase):
输入之后回车
再次出入相同的gitLab密码 Enter same passphrase again:
之后就回车,完成这一步。
step 3: 执行 ssh-agent bash 命令 回车稍等一下就ok了。
step 4: 接着执行 ssh-add ~/.ssh/id_rsa 命令。提示输入gitLab密码。输入结束,回车完成这一步。会生成对应的sshKey数据放到相应的目录下。这个命令执行之后会将目录显示出来。
step 5: 找到对应目录下的 /ssh/id_rsa.pub文件,将里面的字符串 copy 到 gitLab setting 里面的 SSH Keys 对应的文本框内,点击Add就ok了。
step 6: 注意,第一次 git clone的时候,需要输入 gitLab密码。
21. git 回滚到指定 hash key(SHA1 ID)的命令: git reset --hard 626b0f7df306aa120ae99c394
或者 git reset --hard origin/uired
23. git remote prune origin 删除远程仓库中已经不存在的但是本地仓库还存在的旧分支。
以便解决如下这类 git fetch --all 命令执行中的错误:
error: some local refs could not be updated; try running
'git remote prune origin' to remove any old, conflicting branches
error: Could not fetch origin
调用git remote prune origin之后,再接着执行 git fetch --all 就ok了。
24. 换行符自动转换的问题:
git config core.autocrlf false
git config --global core.autocrlf true
拉去代码不需要转换:
git config --global core.autocrlf input
一些错误:
1. fatal: unable to access 'spdray.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 127.0.0.1:10080
使用代理的时候,如果只设置git config --global http.proxy https://127.0.0.1:10080
而没有设置 git config --global http.proxy http://127.0.0.1:10080
就会在git clone https...时候报上述错误。