GIT操作
秘钥添加
1.ssh-keygen -t rsa -C "xxxx@xxxx.com"
安装git之后,查看我的电脑,用户,xxx(就是你本人的文件夹),是否含有.ssh目录,有的话进去查看有没有id_rsa和id_rsa.pub两个文件。没有的话,就执行这一步的命令,生成秘钥,有的话就跳过这一步。
2.打开 id_rsa.pub文件,复制里面的内容,将内容复制到自己的github或者gitlab的SSHkeys当中。这样就省去了每次提交都要输入账号密码的问题。
git 配置
配置本机的用户
git config --global user.name "xxxx"
git config --global user.email "xxx@xxx.com"
git clone
git clone xxxxx
克隆远程仓库,建立关联,在本地查看远程仓库代码。
git clone -b 分支名 分支地址
克隆远程仓库的指定分支,建立关联。
git status
查看本地仓库是否干净,即是否有未暂存的内容。
git add
git add xxx文件
添加文件到暂存区,可使用 git add . 添加全部文件到暂存区。
git commit
git commit -m "xxxx"
提交到当前分支,并书写本次提交的内容
git push
git push xxx xxxx
推送到当前分支的远程仓库
git pull
git pull xxx xxx
拉取本分支的远程仓库代码
git checkout xxx
切换到xxx分支,切换分支之前,一定要确保当前分支是干净的,即 git status 显示是 干净的。
git branch xxxx
在任一分支上创建一个新分支,新分支的仓库与当前分支一致。
git checkout -b 新分支名称 origin/远程分支名称
通常git clone 下来都是master分支,本地新建分支并和远程分支建立联系,可以使用这个命令。例如远程有个 test 分支。 git checkout -b test origin/test 这里本地创建了一个test分支,内容来源于远程的test分支。并且已经建立了对应关系。提交的时候直接git push 就好了
git log
查看 git 提交历史
git reflog
查看命令历史,可根据打印出内容回到任意版本
git refloggit reset --hard xxx(commit ID)
回退到XXX版本
git checkout -- 文件名
丢弃工作区某文件的修改,恢复到未修改之前。
git reset HEAD <file>
丢弃暂存区某文件的修改,让其回到工作区,然后再用 git checkout -- 文件名 恢复到没修改之前。
代码回滚 (reset revert)
简单来说, reset 是回到某次提交,可前可后。不会产生新的记录,只会在已经存在的记录上实现,查看log记录的话,不会看出来回滚操作,需要查看reflog。revert 可前可后,但是会产生新的记录,整个过程是向前前进的,可以理解为把要回滚的分支复制一份内容出来,然后重新在当前的内容下修改。既然这样,就可能会产生冲突。
冲突解决
协作开发时,共同修改了同一个地方,就会产生冲突。
1.与主干冲突,找到提交代码的对应开发,两人沟通以谁为主。
更加详细,请移步 廖雪峰 git教程
回滚远程分支
这是一波危险操作,请谨慎
[Git高级教程(二)] 远程仓库版本回退方法 - 梧桐那时雨 - CSDN博客
同一电脑上使用多账号或gitlab 和 github。同时连接gitlab和github - 掘金
抽重要的讲
一般公司电脑都会配置git都会配置 全局 例如 git config --global user.email "xxx@xxx.com" 这种,一般是gitlab,那么我们自己用github的时候,就要重新配置。
1.配置名称,并生成 秘钥。github需要加个名称,避免覆盖掉。例如 id_rsa_xxxx
ssh-keygen -t rsa -C "your.email@example.com"
2.生成了 id_rsa_xxxx 的秘钥文件,复制秘钥并添加到github账号上。
3.添加 config 文件,编辑内容。
vim config
这里做个匹配,如果是 github,就使用id_rsa_xxxx 的秘钥,不是就用 默认的全局账号,即gitlab。
# github
Host github
User git
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_xxxx
4.克隆仓库,进入到项目目录,定义项目内git账号
git config --local user.name 'aaa'
git config --local user.email 'aaa@qq.com'
5.然后正常提交到github就好。