git branch -a #所有分支 git fetch origin #拉取远程分支 git reset --hard origin/branch-name #重置到远程分支 git push --force origin master #强制把本地分支推送到远程 ==========================================================================================代理 http://用户名:密码@127.0.0.1:10809 git -c http.proxy='http://127.0.0.1:10809' clone https://github.com/qq12352100/qq12352100.github.io.git #临时代理克隆 git -c http.proxy='http://127.0.0.1:10809' push origin master #临时代理推送 git config --global https.proxy 'http://127.0.0.1:10809' #全局设置 HTTPS 代理 git config --global --unset https.proxy #取消HTTPS代理 git config --global http.proxy 'http://127.0.0.1:10809' #全局设置 HTTPS 代理 git config --global --unset http.proxy #取消HTTP代理 ==========================================================================================github换gitee git remote -v #查看远程信息 git remote rm origin #删除远程信息 git remote add origin git@gitee.com:qq12352100/note.git #添加新的 git push -u origin "master" #提交代码 git pull origin master --no-rebase #将远程变更合并到本地,保留完整历史 git branch --set-upstream-to=origin/master master #设置上游分支,避免下次再提示 ==========================================================================================下载别人代码 git init git remote add origin https://github.com/codeskyblue/gohttpserver.git git remote -v git clone https://github.com/codeskyblue/gohttpserver.git ==========================================================================================撤销本地 git checkout . 【撤销本地所有未提交的修改】 git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了 ==========================================================================================配置文件 /etc/gitconfig 对所有用户有效 ~/.gitconfig 对当前用户有效 {工作目录}/.git/config 仅对当前项目有效 $ git help $ git --help $ man git- 比如,要学习 config 命令可以怎么用,可执行: $ git help config git config --list --global #查看全局配置的所有设置 git config --list #查看本地仓库的所有配置设置 ==========================================================================================git查看某个文件的修改历史 一、切换到目录 二、git log --pretty 例如:git log --pretty=oneline 文件名 三、git show 例如:git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e -------------------------------------------------------------------------- git log 查看commit的历史 git show 查看某次commit的修改内容 git log -p 查看某个文件的修改历史 git log -p -2查看最近2次的更新内容 ==========================================================================================github添加多个key 一、创建两个key $ ssh-keygen Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): //路径+文件名 Enter passphrase (empty for no passphrase): //密码(输入不会有提示) Enter same passphrase again: //再输入一次密码 二、查看系统ssh-key代理,执行如下命令 $ ssh-add -l Could not open a connection to your authentication agent. 如果发现上面的提示,说明系统代理里没有任何key,执行如下操作 exec ssh-agent bash 如果系统已经有ssh-key 代理 ,执行下面的命令可以删除 $ ssh-add -D 添加密钥到ssh-agent $ ssh-add ~/.ssh/keys/key_note $ ssh-add ~/.ssh/keys/test ==========================================================================================github添加一个key 1、检查是否已经存在KEY $ cd ~/.ssh $ ls config id_rsa id_rsa.pub known_hosts $ mkdir key_backup $ cp id_rsa* key_backup $ rm id_rsa* 注:windows7在C:\Users\ZDZ\.ssh目录下可以找到了 2、生成SSH KEY $ ssh-keygen -t ssh-rsa -C "qq12352100@163.com" $ ssh-keygen -t ed25519 -C "qq12352100@163.com" 3、将Public Key 添加到GitHub Account-->SSH keys 里面的 Add a new key , 将你的public key(id_rsa.pub)的内容拷贝到SSH key文本框 4、测试 $ ssh git@github.com ========================================================================================== $git clone git@github.com:qq12352100/note.git 5.1 配置 git config -l //查看全局配置 git config --global user.name "bkk" //设置用户名 git config --global user.email "qq12352100@163.com" //设置邮箱 //暂时禁用 git config --global --unset user.name git config --global --unset user.email 5.2 创建Repository mkdir clrs cd clrs git init touch README git add README git commit -m 'first commit' git remote add origin git@github.com:qq12352100/note.git git push origin master git remote add origin git@github.com:qq12352100/note.git //添加远程仓库 git@gitee.com:qq12352100/note.git git remote -v //查看远程仓库 git remote rm origin //移除远程仓库 5.3 提交已经存在的Repository cd existing_git_repo git remote add origin git@github.com:qq12352100/note.git git push origin master ==================================================================================================================Git配置 当前用户的Git配置文件放在用户主目录(c:/docments and settings/andministrator)下的一个隐藏文件.gitconfig中 //git lg 设计log样式 git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" git config --global alias.last 'log -1' //git last显示最后一次提交信息 git config --global alias.st status //告诉Git,以后st就表示status git add .gitignore //.gitignore内容为(*.zip文件 /WebRoot/WEB-INF/classes/文件夹) ===================================================================================================================标签 git tag v1.0 //切换到需要打标签的分支上,打一个新标签 git tag -a v0.1 -m "version 0.1 released" 3628164 //-a指定标签名,-m指定说明文字 git tag -d v0.1 //删除标签 git push origin v1.0 //推送某个标签到远程 git push origin --tags //一次性推送全部尚未推送到远程的本地标签 git push origin :refs/tags/v0.9 //要删除远程标签,先从本地删除,远程删除命令也是push ====================================================================================================================分支、工作现场 git checkout -b dev //创建分支dev(-b参数表示创建并切换 =$ git branch dev + $ git checkout dev) git checkout -b tyzf origin/tyzf //创建并检出远程分支,并切换到该分支 git branch //查看当前分支 git merge dev //合并指定分支到当前分支 git branch -d dev //删除本地dev分支 git push origin --delete dev //删除远程dev分支 简写 git push origin :dev git fetch -v //获取远程仓库的变化信息到本地仓库 git branch //列出本地已经存在的分支,并且当前分支会用*标记 git branch -a //查看所有分支列表(包括本地和远程,remotes/开头的表示远程分支) git branch -r //查看远程版本库的分支列表 git branch -v //查看一个分支的最后一次提交 git branch --merged //查看哪些分支已经合并到当前分支 git branch --no-merged //查看所有未合并工作的分支 git stash //当前工作现场“储藏”起来,等以后恢复现场后继续工作 git stash list //查看存储了几个工作现场 git stash apply stash@{0} //恢复特定的工作现场 git stash apply //恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除; git stash pop //恢复的同时把stash内容也删了: ====================================================================================================================== mkdir test01 //创建目录 cd test01 //进入目录 pwd //显示所在路径 git init //初始化仓库,生成.git隐藏文件 git add readme.txt //添加文件(文件要在test01目录下面) git commit -m "first file" //提交文件(形成一个快照,以便以后恢复,后面添加提交信息) git status //查看仓库状态 git diff readme.txt //查看文件与上次哪里不同 git log --pretty=oneline //查看日志 git log -10 --format="%H %ad %an %ar %s" --date=short //最近10次提交的日志 git reset --hard HEAD^ //退回上个版本,用HEAD表示当前版本,上上一个版本就是HEAD^^ git reset --hard 3628164 //退回指定版本(版本号不用写全,前几位就可以) git reflog //记录你的每一次命令 git checkout -- readme.txt //让这个文件回到最近一次git commit或git add时的状态 git reset HEAD readme.txt //把暂存区的修改撤销掉,重新放回工作区.把暂存区的修改回退到工作区 rm test.txt //从本机删除文件 git rm test.txt --cached //从版本库中删除文件,但不删除文件 git rm image -r //删除指定目录所有文件 git remote add origin git@github.com:qq12352100/note.git //关联远程仓库 git remote -v //查看远程仓库 git remote remove origin //取消关联远程仓库 git push -u origin master //推送到远程库上 git clone git@github.com:qq12352100/note.git //克隆远程仓库 cd gitskills //进入目录 ls //查看文件 三步曲================================================================================================================= git add . //添加文件(目录下面所有文件) git commit -m "first file" //提交文件(形成一个快照,以便以后恢复,后面添加提交信息) git push -u origin master //推送到远程库上 =======================================================================================================================合并命令 git pull origin master //从远程获取最新版本并merge到本地,相当于git fetch 和 git merge git fetch origin master //从远程获取最新版本到本地,不会自动merge git commit -am "first file" //提交文件,相当于git add . 和 git commit -m "first file" =======================================================================================================================问题 问题:Please move or remove them before you switch branches. 解决:git clean -dfx 强调一下,git clean是把你当前工作的分支所有东西保持和远程的分支一致,就是说你远程是怎么样的,执行这个命令后你本地的就是怎么样的,没有进入版本的文件会直接扔掉 问题:fatal: Unable to create 'e:/git/Android/XXXXXX/.git/index.lock': File exists. 解决:在.git同级目录,执行rm -f .git/index.lock (或者rm -f git/index.lock) 删除后可提交 问题:fatal: remote origin already exists. 解决: 1、先输入$ git remote rm origin 如果输入$ ssh -T git@github.com 出现错误提示:Permission denied (publickey).因为新生成的key不能加入ssh就会导致连接不上github。 解决办法如下: 1、先输入$ ssh-agent,再输入$ ssh-add ~/.ssh/id_key,这样就可以了。 ======================================================================================================================= 控制台中文乱码 git config --global core.quotepath false =======================================================================================================================fatal: CRLF would be replaced by LF in git config --global core.autocrlf input git config --global core.eol lf =======================================================================================================================【配置文件】 D:\Program Files\PortableGit-2.50.0.2-64-bit\etc\gitconfig 文件 [core] symlinks = false autocrlf = true fscache = true [color] interactive = true ui = auto [help] format = html [diff "astextplain"] textconv = astextplain [rebase] autosquash = true [filter "lfs"] clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true [credential] helper = !\"D:/Program Files/PortableGit-2.50.0.2-64-bit/mingw64/bin/git-credential-manager.exe\" ------------------------------------------------------------------------------------------------------------------------- C:\Users\admin1\.gitconfig 文件 # ============================== # Git 全局配置文件 (~/.gitconfig) # 用户:bkk # 邮箱:qq12352100@163.com # 平台:Windows (Git for Windows + PortableGit) # ============================== [user] name = bkk email = qq12352100@163.com [core] # 自动转换换行符:提交时转 LF,检出时转 CRLF(适合 Windows) autocrlf = true # 不启用符号链接(Windows 默认不支持) symlinks = false # 启用文件系统缓存,提升性能 fscache = true # 路径含中文/特殊字符时不转义(如显示“中文.txt”而非 \344\270\255.txt) quotepath = false # 默认分支名(新建仓库时使用) defaultBranch = master [color] # 自动启用彩色输出 ui = auto [color "interactive"] # 交互式命令(如 add -p)启用颜色 enabled = true [help] # 使用 HTML 格式打开帮助文档(在浏览器中查看) format = html [diff "astextplain"] # 对二进制文件(如 .docx, .pdf)尝试转为文本进行 diff textconv = astextplain [rebase] # 执行 git rebase -i 时自动归并 fixup!/squash! 提交 autosquash = true [filter "lfs"] # Git LFS(大文件存储)配置 clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true [credential] # 使用 Git Credential Manager (GCM) 安全管理凭证 helper = "D:/Program Files/PortableGit-2.50.0.2-64-bit/mingw64/bin/git-credential-manager.exe" [credential "http://172.30.162.102:8088"] # 指定私有 Git 服务器使用通用凭证提供者 provider = generic # ============================== # 可选增强配置(按需取消注释) # ============================== # [alias] # st = status # co = checkout # br = branch # lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit # unstage = reset HEAD -- # [push] # # 推送时默认使用当前分支名(避免每次写全名) # default = current # [pull] # # 使用 rebase 而非 merge 进行 pull(保持线性历史) # rebase = true