--- layout: post title: "git" categories: termux tags: 日记 author: YJG --- * content {:toc} ### 目录 *** * [恢复删除的文件](#恢复删除的文件) ### Git [^1] [^1]:安装 ###### `git安装` ```php pkg insrall git ``` [^2] [^2]:登陆 ###### `git登陆` ```php git config --global user.name sxgpyjg git config --global user.email sxgpyjg@qq.com # 彩色的 git 输出: git config --global color.ui true # 显示历史记录时,每个提交的信息只显示一行: git config --global format.pretty oneline ``` [^3] [^3]:初始化仓库 ###### `初始化仓库` ```php mkdir gitdemo && cd gitdemo git init # Initialized empty Git repository in /root/gitdemo/.git/ ``` [^4] [^4]:生成库 ###### `生成库` ```php git init // 在当前目录新建一个Git代码库 ``` [^5] [^5]:新建,编辑,改名,移动 ###### `新建文件,文件夹,编辑,改名,移动文件` ```php mkdir nodejs //创建文件夹nodejs cd nodejs //切换到nodejs目录下 touch 文件名 //新建文件 vim 文件名 //编辑文件 git mv [file-original] [file-renamed] //改文件名并放入暂存区 git mv ./.git/ ./README.md ../ // 表示把当前目录下的.git文件和README.md文件移动到上一层目录下,之后使用ls -al命令查看该目录发现确实被移动了 ``` [^6] [^6]:添加文件到本地库 ###### `添加文件到本地库` ```php echo "# myblog" >> README.md //在当前目录下新建README.md,且文件内容为'myblog';如果目录下已经有文件,请省略这一步 git add README.md //将README.md文件提交到问题暂存区 git commit -m "first commit" //将暂存区文件提交到本地仓库,且本次提交记录为'first commit' git status -sb //显示当前所有文件的状态 ``` [^7] [^7]:建立连接 ###### `建立连接` ```php git push //将本地仓库修改内容同步到远程仓库 git pull //将远程库修改的内容下载到本地库 ``` ###### `删除远程文件或文件夹保留本地` ```php //首先cd命令进入要删除的文件或者文件的根目录,directory代表要删除文件相对的当前的目录的路径跟文件名 git rm -r --cached directory git commit -m "desption" git push origin master git push github master //推送到GitHub远程库 git push gitee master //推送到码云远程库 //重点:删除哪个远程库文件就推送到哪个库 删除所有记录 git checkout --orphan latest_branch git add -A git commit -am "commit message" git branch -D master git branch -m master git push -f origin master git branch --set-upstream-to=origin/master git pull ``` [^8] [^8]:上传项目 > 跟踪项目文件夹中的所有文件和文件夹 ```php git add -A 提交所有变化 git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件. ``` [^9] [^9]:输入本次的提交说明,准备提交暂存区中的更改的已跟踪文件,单引号内为说明内容 > 输入本次的提交说明,准备提交暂存区中的更改的已跟踪文件,单引号内为说明内容 ```php git commit -m 'first_commit' ``` [^10] [^10]:关联远程仓库,添加后,远程库的名字就是 origin,这是 Git 默认的叫法,也可以改成别的,但是 origin 这个名字一看就知道是远程库. > 关联远程仓库,添加后,远程库的名字就是 origin,这是 Git 默认的叫法,也可以改成别的,但是 origin 这个名字一看就知道是远程库. ```php git remote add origin https://github.com/sxgpyjg/sxgpyjg.github.io ``` >> 如果关联出现错误 fatal: remote origin already exists,则执行下列语句再进行关联 ```php git remote rm origin ``` [^11] [^11]:把本地库的所有内容推送到远程库上 > 把本地库的所有内容推送到远程库上 ```php git push -u origin master git push -u github master //GitHub远程库 git push -u gitee master //码云库 ``` [^12] [^12]:如果在推送时出现错误 error:failed to push som refs to.......,则执行下列语句. > 如果在推送时出现错误 error:failed to push som refs to.......,则执行下列语句. ```php git pull origin master git pull github master //GitHub远程库 git pull gitee master //码云库 ``` > 将远程仓库 Github 上的文件拉下来合并之后重新推送上去 [^13] [^13]:关联两个库 ### 既关联GitHub,又关联码云 ###### `先关联GitHub的远程库` ```php git remote add github git@github.com:sxgpyjg/sxgpyjg.github.io //注意,远程库的名称叫github,不叫origin了。 ``` [^14] [^14]:关联码云库 ###### `接着,再关联码云的远程库` ```php git remote add gitee git@gitee.com:sxgpyjg/learngit.git //同样注意,远程库的名称叫gitee,不叫origin。 ``` > 现在,我们用git remote -v查看远程库信息,可以看到两个远程库 ```php git remote -v gitee git@gitee.com:sxgpyjg/learngit.git (fetch) gitee git@gitee.com:sxgpyjg/learngit.git (push) github git@github.com:sxgpyjg/sxgpyjg.github.io (fetch) github git@github.com:sxgpyjg/sxgpyjg.github.io (push) ``` [^15] [^15]:推送到远程库 ###### `推送到远程库` ```php //如果要推送到GitHub,使用命令 git push github master //如果要推送到码云,使用命令 git push gitee master ``` `这样一来,我们的本地库就可以同时与多个远程库互相同步` [^16] [^16]:恢复删除的文件 ### 恢复删除的文件 ###### `一、git ls-files -d 查看删除了的文件` > 1.查看当前状态可以看到删除了一个index.js; ```php git status ``` > 2.查看当前项目中删除了的文件 ```php git ls-files -d ``` > 3.恢复删除的单个文件 ```php git checkout -- javascript/index.js ``` > 4.如果要恢复多个被删除的文件,直接输入 ```php git ls-files -d | xargs git checkout -- ``` [^17] [^17]:查看修改了的文件 ###### `二、查看修改了的文件` ```php git ls-files -m ``` `恢复修改文件的方法与恢复删除文件的方法一样,只是 -d 换成 -m;` ### gitlab中添加了sshkey push/pull时还需要输入用户名密码解决办法 [^18] [^18]:使用ssh连接 ###### `ssh连接免密码登录` ```php git config --global credential.helper store ``` 然后操作pull/push 会让输入用户名密码,第一次输入进去。下次再操作pull/push时就不需要输入用户名密码了。 [^19] [^19]:覆盖本地命令 ###### `git强制覆盖本地命令(单条执行):` ```php git fetch --all && git reset --hard github/master && git pull //github,或使用gitee ``` *** ---