git环境配置和常用命令

一、git全局配置

git全局配置文件.gitconfig 默认目录是系统用户文件夹下,Win系统可运行%USERPROFILE%查找,Mac系统cd ~查找;
git初始使用时都需要进行user的配置,包括用户名和邮箱的配置

	$ git config --global user.name "name"    #修改提交名
	$ git config --global user.email “email”  #修改邮箱,会写入到公钥中
	$ git config --global --list      # 查看全局配置

如果不加–global 修改的是当前项目git配置

二、git密钥配置–以SSH全局配置密钥

1 检查SSH Key是否存在
	$ cd ~/.ssh    # 查看用户根目录下.ssh文件夹
	$ ls      #存在id_rsa.pub 或 id_dsa.pub 文件
2 创建SSH Key
$ ssh-keygen -t rsa -C "[email protected]"  # 此email可任意,不一定要gitLab登录邮箱
3 查看SSH Key
$ cat ~/.ssh/id_rsa.pub   #copy公钥内容到gitLab里,添加进去。
4 测试SSH Key
	$ ssh -T "[email protected]"
5 配置多个网站ssh密钥

在生成每个网站ssh-key时,自定义名称不要一样,然后在~/.ssh目录下新建一个config文件,然后配置多个网站的ssh信息,内容如下:
# gitLab

	Host dev.gitLab.com
	HostName dev.gitLab.com
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/id_rsa

# phabricator

	Host 192.168.1.5
	HostName 192.168.1.5
	Port 22
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/phabricator

三、git常用命令

1仓库管理
	$ git init  #初始化,操作后当前目录下会生成.git隐藏文件夹
	$ git remote add origin http://dev.github.com:9800/root/front.git #添加仓库地址
	$ git remote set-url origin http://dev.github.com:9800/root/front.git  # 修改仓库地址
	$ git remote set-url --add origin http://dev.github.com:9800/root/front.git  #添加多个远程仓库

# 切换http(s)/ssh方式:

	$ git remote rm origin
	$ git remote add origin "git远程地址"
	$ git push origin
	$ git remote -v  # 查看当前仓库地址
	$ git clone http://dev.github.com:9800/root/front.git    # 创建本地仓库,会在当前目录下自动生成front的仓库目录,如果自定义文件夹名,后面空格后加上名称
2 分支管理
  • 查看分支
	$ git branch    # 查看本地分支
	$ git branch -r # 查看远端分支
	$ git branch -a # 查看所有分支
	$ git branch -vv  # 查看分支状态
  • 创建分支
	$ git branch <branch> <origin-branch> # 创建本地分支,并关联远端
	$ git commit -b <branch> <origin-branch> # 创建本地分支并立即切换过去
	$ git push origin -u <branch>:<origin-branch> # -u:创建远程分支并关联,origin-branch不用带origin/路径
  • 切换分支
	$ git commit <branch>  # 切换分支
	$ git fetch # 切换到游离分支(不在任何分支)
	$ git commit FETCH_HEAD
  • 合并分支

    $ git merge <branch> --no-ff # 合并本地分支 --no-ff:关闭Fast-Foward合并,这样可以生成merge提交,保留分支合并信息
    

    #合并远端本地(不用先checkout到本地):

    $ git fetch # 先更新远程仓库所有分支上最新commit-id到本地
    $ git merge origin/<branch> --no-ff  # 再从远端merge,无需先拉取到本地
    $ git merge --abort  # 取消合并
    

    # 合并冲突处理:

    $ git mergetool  # 如果在~/.gitconfig下正确配置了比较工具,会依次弹出比较窗口,处理后保存
    $ git clean -nfd  # 查看不在版本库中合并文件,以.org结尾
    $ git clean -fd   # 确认无误后,移除这个.org临时文件
    $ git add -A
    $ git merge --continue  # 继续完成merge流程
    
  • 修改分支

    $ git branch -m <branchName>  #修改分支名称
    $ git branch --set-upstream-to <origin-branch>  # 修改当前分支远端关联
    $ git branch --set-upstream <branch> <origin-branch> #修改指定分支远端关联
    
  • 删除分支

    $ git branch -d <branch>#删除本地分支
    $ git branch -D <branch> # 强制删除,未被合并的分支被删除的时候需要强制
    $ git br | grep <branch> | xargs git branch -d  #批量删除本地分支:
    

    # 删除远端分支:

    $ git push origin --delete <branch>
    # 或:
    $ git push origin :<branch>  # 推送一个空分支到远端,即删除
    
  • 更新分支

    $ git fetch -p # 从远端拉取最新的分支信息,更新本地缓存,更新被删除的分支
    
3 查看管理
	$ git status # 查看当前工作状态
	$ git log     # 查看全部提交记录
	$ git diff <commit-id1> <commit-id2> # 比较两次提交之间的差异
	$ git reflog   # 查看历史操作记录
4 操作管理
  • 更新

    $ git pull --no-ff  #  非快进更新
    $ git pull --rebase # 基于rebase的避免产生无用的合并信息
    

    # 解决rebase冲突方法:

    $ git add -A   # 强制添加到
    $ git rebase --continue
    $ git push
    

    # 临时更新:

    $ git stash      # 先放入暂存区
    $ git pull
    $ git stash pop  # 恢复显示工作内容,或用git stash apply stash@{n}挑选恢复哪个
    

    #管理暂存:

    $ git stash list    # 显示暂存列表
    $ git stash clear   # 清除暂存列表
    
  • 提交
    #多个修改,只提交部分:

    $ git add <file1> <file2>   # 只添加要提交的到本地暂存区
    $ git commit -m 'commit info'   # -m处不加a
    $ git push
    

    #提交全部:

    $ git add . # 有新文件时,一定要
    $ git commit -am 'commit info'
    $ git push
    

    #追加提交:(未push到远端)
    将最近一次的变更追加到最新的提交,同时也可以编辑提交信息,不产生新的提交记录。

    $ git commit --amend   # 如果已push到远端,不建议追加,容易跟自己冲突
    $ git push
    

    #提交时绕过pre-commit验证:

    $ git commit -am 'commit info' --no-verify
    

git clone时出现问题及解决

1、出现“Please make sure you have the correct access rights and the repository exists.”问题
原因: git服务器没有存储本地ssh密钥
解决方法:

  1. 直接删除.ssh文件夹中的known_hosts文件
  2. 重新生成SSH Key
  3. 复制id_rsa.pub的内容,登陆到github账户,setting中粘贴到key中,Add SSH Key
  4. ssh -T [email protected]
  5. git clone 成功

2、“The authenticity of host ‘git.jd.com (172.20.39.31)’ can’t be establiyesd.”问题
原因: 缺少know_host文件,git生成.ssh/下三个文件,id_rsa id_rsa.pub和know_host,
解决方法: 修改 /etc/ssh/ssh_config 文件的配置
在文件最后面添加以下两行内容:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

猜你喜欢

转载自blog.csdn.net/ccccsy99/article/details/106020672
今日推荐